Computer systems employ a wide variety of peripheral components or input/output (I/O) devices. For example, a typical computer system usually contains a monitor, a keyboard, a mouse, a floppy drive, a network controller, a disk drive or an array of disk drives, and, optionally, a printer. High performance computer systems such as servers have more complex I/O device requirements.
An example of a host processor of a computer system connected to I/O devices through a component bus is defined by the PCI (peripheral component interconnect) Local Bus Specification, published by the PCI Special Interest Group. During system initialization, the host processor loads a device driver for each PCI device on the PCI bus. A typical PCI device includes multiple configuration registers located within a configuration memory space of each respective PCI device. The configuration registers including identification registers, such as, for example, the vendor ID, device ID or revision register, are read by the device driver and the host system during the initialization or normal operations to identify the PCI device. Typically, the identification registers are hardwired to fixed values during the manufacturing processes of the PCI device and they are not modifiable by the device driver or the operating system (OS) of the host. As a result, a legacy device driver that is looking for specific identification of a PCI device will not work with a PCI device having different identification information, such as, a different vendor ID or a different device ID, etc.